package com.lhc.control;

import com.lhc.bean.AdminInfoBean;
import com.lhc.model.IAdminManagerModel;
import com.lhc.model.impl.AdminManagerModelImpl;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.annotation.Resource;

/**
 *   在springmvc中，使用注解@Controller表明这个是控制层的类
 */

@Controller
public class AdminManagerControl {

    /**
     *   注解是给jvm的注释，可以参与编译运行，也可以不参与编译运行
     *   Resource注解告诉jvm(jvm使用spring框架)，此处需要给当前变量进行new赋值操作
     *   约定：1.可以使用参数名进行匹配
     *
     *   上面描述的操作，都是由spring框架进行承担
     *   实现过程称为ioc
     *
     *   spring框架的ioc(反转控制)或di(依赖注入)
     *
     *   ioc(控制反转)：从spring使用者的角度而言，本来当前类来使用new创建自己使用的类的实例对象
     *    将创建所使用的类的实例对象的权限反转给spring
     *
     *    di(依赖注入)：从spring的角度来说
     *    spring框架在依赖注入的管理范围内
     *    把使用者需要的类的实例对象通过映射规则(按类型、变量名)
     *    注入给所声明的变量：
     *     (spring框架通过注入方式把声明的变量进行new初始化)
     *
     *     ioc和di是一种机制的两个维度的描述
     */
    @Resource
    private IAdminManagerModel adminM;

    /**
     *
     * 要求：方法中的参数需要和前天页面中的表单控件
     *    Name属性值保持一致
     *
     *    若方法中的参数是一个实体类类型
     *    RequestMapping中的映射路径需要和前台请求页面中form表单的action属性保证一致
     */

    /*@RequestMapping("/dologining")
    public String doLogin(String adminName,String adminPsw)
    {
        //查看从前台传入的数据
        System.out.println("用户名："+adminName);
        System.out.println("密码："+adminPsw);
        return "logined";

    }*/


    @RequestMapping("/dologining2")
    public String doLogin2(AdminInfoBean aib)
    {
        //查看从前台传入的数据
        System.out.println("用户名："+aib.getAdminname());
        System.out.println("密码："+aib.getAdminpsw());
        //调用Model进行登录的业务逻辑
        //IAdminManagerModel adminM=new AdminManagerModelImpl();
        boolean isLogined=adminM.doLogin(aib);
        if(isLogined) {
            //登录成功
            //跳转到登录成功页面
            //
            return "logined";
        }else{
            //登录失败
            //重新返回到登录页面
            return "../../index";
        }

    }
}
